今天準備要來跟大家介紹report,現在先來講解建立model的部分。
範例如下:
from odoo import api, models, fields
class IDXRepairReport(models.AbstractModel):
_name = 'report.idx_interview.idx_repair'
_description = '維修報表'
@api.model
def _get_report_values(self, docids, data=None):
docs = self.env['idx.repair'].browse(docids)
return {
'doc_ids': docids,
'doc_model': 'idx.repair',
'docs': docs,
'data': data,
}
從上面的範例中可以發現,建立report的model時是使用AbstractModel,在建立這個類型的model時並不會在資料庫產生實際的資料表,通常用於報表或wizard類的model。
_name
:固定以'report.' + module名稱 + 自定義的model名稱
來做命名。_description
:model的說明。
接下來要介紹_get_report_values
的用法,這個function是用來在列印報表時提供資料的function,只要建立報表類的model,一定都要定義這個function才行。
下面來一一介紹他的參數:
雖然data可以讓使用者放其他報表中需要的資料,如果有許多種類的資料想傳遞,但想為了方便管理而不想把全部的資料放在同一個參數裡的話,也可以自己新增傳遞的參數。
建立報表model先介紹到這邊,明天會換來介紹建立report樣板的部分。